//
//  ViewController.swift
//  TimeLineDemo
//
//  Created by 李煜 on 2022/3/2.
//

import UIKit

class ViewController: UIViewController {
	var consumptions: [Consumption]?

	var tableView: UITableView!
	override func viewDidLoad() {
		super.viewDidLoad()

		// 初始化数据,放在属性列表文件中
		consumptions = [
			Consumption(title: "充了手机话费", cost: 100.0, datetime: "2016.10.10 12:10",
			            appendix: ""),
			Consumption(title: "超市购物", cost: 810.0, datetime: "2016.10.11 12:10",
			            appendix: "买了台豆浆机，一袋大米，一桶油，两斤苹果，一包饼干，两只牙刷。"),
			Consumption(title: "同事结婚随礼", cost: 500, datetime: "2016.10.11 17:10",
			            appendix: ""),
			Consumption(title: "办健身卡", cost: 1000, datetime: "2016.10.15 11:00",
			            appendix: "有效期至2016年10月"),
		]

		// 创建表视图
		tableView = UITableView(frame: view.frame, style: .plain)
		tableView.delegate = self
		tableView.dataSource = self
		tableView.register(TimeLineCell.self, forCellReuseIdentifier: "TimeLineCell")

		// 让单元格自适应
		tableView.rowHeight = UITableView.automaticDimension
		tableView.estimatedRowHeight = 100
		tableView.separatorStyle = UITableViewCell.SeparatorStyle.none
		tableView.tableFooterView = UIView()

		view.addSubview(tableView)
	}
}

extension ViewController: UITableViewDelegate, UITableViewDataSource {
	func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
		consumptions!.count
	}

	func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
		let identifier = "TimeLineCell"
		var cell = tableView.dequeueReusableCell(withIdentifier: identifier) as? TimeLineCell
		if cell == nil {
			cell = TimeLineCell(style: .default, reuseIdentifier: identifier)
			cell?.selectionStyle = .none
		}

		// 获取记录
		let consumption = self.consumptions![indexPath.row]
		cell!.timeLineIcon.image = UIImage(named: "money")
		//设置时间轴上的图标
		cell!.timeLineIcon.image = UIImage(named: "money")
		//设置消费金额
		cell!.costLabel.text = "\(consumption.cost) 元"
		//设置消费时间
		cell?.dateTimeLabel.text = consumption.datetime
		//设置消费内容
		cell?.titleLabel.text = consumption.title
		//设置备注信息
		cell?.appendixLabel.text = consumption.appendix
		//设置是否有备注（自动更新备注标签容器相关约束）
		cell?.hasAppendix = (cell?.appendixLabel.text != "")
		return cell!
	}
}

// 消费记录
struct Consumption {
	/// 消费条目
	var title: String

	/// 费用
	var cost: Double

	var datetime: String // 时间
	var appendix: String // 备注
}
